package nivel;

/**
 * La clase score mantiene el puntaje de la partida. Toda modificación se hace a
 * través de él.
 * 
 * @author Agustin Orge (LU.85538)
 * @author Victoria Martinez de la Cruz (LU.87620)
 */
public class Score {

	/** Puntaje acumulado por el jugador */
	protected int puntaje;

	/** Vidas restantes */
	protected int vidas;

	/** Cantidad de monedas recolectadas por el jugador */
	protected int monedas;

	// constructor
	/**
	 * Constructor de Score - Crea un nuevo Score y lo inicializa con valores
	 * por defecto
	 */
	public Score() {
		puntaje = 0;
		vidas = 1;
		monedas = 0;
	}

	// consultas

	/**
	 * Retorna el puntaje acumulado por el jugador hasta el momento
	 * 
	 * @return puntaje acumulado
	 */
	public int getPuntaje() {
		return puntaje;
	}

	/**
	 * Retorna la catidad de vidas restante
	 * 
	 * @return cantidad de vidas
	 */
	public int getVidas() {
		return vidas;
	}

	/**
	 * Retorna la cantidad de monedas acumuladas
	 * 
	 * @return cantidad de monedas
	 */
	public int getMonedas() {
		return monedas;
	}

	// comandos

	/**
	 * Modifica el puntaje
	 * 
	 * Aumenta o disminuye segun si el parametro es positivo o negatico
	 * 
	 * @param p
	 *            cantidad de puntos
	 */
	public void modificarPuntaje(int p) {
		puntaje += p;
	}

	/**
	 * Aumenta en uno la cantidad de vidas
	 * 
	 */
	public void aumentarVidas() {
		vidas++;
	}

	/**
	 * Disminuye en uno la cantidad de vidas
	 */
	public void disminuirVidas() {
		vidas--;
	}

	/**
	 * Aumenta en uno la cantidad de monedas
	 * 
	 * Si el total es cien, se encarga de aumentar una vida y reiniciar la
	 * cantidad de monedas en cero
	 */
	public void aumentarMonedas() {
		monedas++;

		if (monedas == 100) {
			aumentarVidas();
			monedas = 0;
		}
	}

}
